#include<stdio.h>

void quick_sort(int array[], int left, int rigth)
{
	int i = left, j = rigth;
	int temp;
	int pivot;//基准点,中间的值

	pivot = array[(left + rigth) / 2];//基准点在数组的位置

	while (i <= j)
	{
		//从左到右找到大于等于基准点的元素
		while(array[i] < pivot)
		{
			i++;
		}
		
		//从左到右找到小于等于基准点的元素
		while(array[j] > pivot)
		{
			j--;
		}
		
		//若i <= j, 则互换
		if(i <= j)
		{
			temp = array[i];//借助temp互换值
			array[i] = array[j];
			array[j] = temp;
			i++;
			j--;
		}
	}

	if(left < j)
	{
		quick_sort(array, left, j);
	}

	if(i < rigth)
	{
		quick_sort(array, i, rigth);
	}
}

int main(void)
{
	int array[] = {73, 108, 111, 118, 101, 70, 106, 117, 104, 67, 46, 99, 111, 109};
	int i, length;

	length = sizeof(array) / sizeof(array[0]);//数组长度即个数
    quick_sort(array, 0, length-1);	//left = 0; rigth = length - 1;

	printf("数组个数: %d \n", length);
	printf("排序后的结果是: ");
	for(i = 0; i < length; i++)
	{
		printf("%d ", array[i]);
	}
	putchar('\n');//最后再输出一个换行符

	return 0;
}
